﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Linq;
using CajaChica.Interfaces;
using CajaChica.Clases;
using CajaChica.Entidades;

namespace CajaChica.Formularios
{
    public partial class frmMaestroCentroCosto : CajaChica.Formularios.frmMaestro
    {
        clsCentroCosto objCentroCosto;
        cajaEntities objCajaEntity;
        public frmMaestroCentroCosto()
        {
            InitializeComponent();
        }

        private void frmMaestroCentroCosto_Load(object sender, EventArgs e)
        {
            objCentroCosto = new clsCentroCosto();
            grdListado.DataSource = objCentroCosto.CargarDatosGridView();
            AsignarPropiedadesGrid();
            txtCadenaBuscar.Select();
        }
        
        public void AsignarPropiedadesGrid()
        {
            
            grdListado.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            grdListado.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            grdListado.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            grdListado.Columns[0].Width = 60;
            grdListado.Columns[1].Width = 230;
            grdListado.Columns[2].Width = 90;
            grdListado.Columns[3].Width = 100;
        }

        private void txtCadenaBuscar_TextChanged(object sender, EventArgs e)
        {
            objCentroCosto = new clsCentroCosto();
            txtCadenaBuscar.CharacterCasing = CharacterCasing.Upper;
            if (string.Empty != txtCadenaBuscar.Text.Trim())
            {
                if(chkCodigo.Checked == true)
                {
                    grdListado.DataSource = objCentroCosto.Buscar(1, txtCadenaBuscar.Text.Trim());
                }
                if (chkDescripcion.Checked == true)
                {
                    grdListado.DataSource = objCentroCosto.Buscar(2, txtCadenaBuscar.Text.Trim());
                }
            }
            else
            {
                grdListado.DataSource = objCentroCosto.CargarDatosGridView();
                AsignarPropiedadesGrid();
                txtCadenaBuscar.Focus();
            }
        }

        private void grdListado_DoubleClick(object sender, EventArgs e)
        {
            objCentroCosto = new clsCentroCosto();
            DialogResult respuesta;
            int codigo;

            codigo = Convert.ToInt32(grdListado.CurrentRow.Cells[0].Value);
            objCajaEntity = new cajaEntities();
            centro_costo cc = objCajaEntity.centro_costo.FirstOrDefault(
                a => a.id == codigo);
            
            respuesta =
                MessageBox.Show(
                    "DESEA EDITAR EL REGISTRO" + 
                    "\nCODIGO = " + cc.id +
                    "\nDESCRIPCION = " + cc.descripcion,
                    "SISTEMA DE CAJA CHICA",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);

            if (respuesta == DialogResult.Yes)
            {
                stcMaestro.SelectedTab = stiRegistro;

                txtCodigo.Text = cc.id.ToString();
                txtCodigo.Enabled = false;
                txtDescripcion.Text = cc.descripcion;
                txtDebe.Text = cc.amarre1.ToString();
                txtHaber.Text = cc.amarre2.ToString();

                sbMantenimiento.ExpandedPanel = sbpModificar;
                btnModificarSeleccionar.Enabled = false;
            }
            else
            {
                txtCadenaBuscar.Focus();
            }
        }

        public void Limpiar()
        {
            txtCodigo.Text = "0";
            txtDescripcion.Text = "";
            txtDebe.Text = "0";
            txtHaber.Text = "0";
        }
    
        private void btnNuevoSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnModificarSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnEliminarSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnVerSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnModificarCancelar_Click(object sender, EventArgs e)
        {
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcMaestro.SelectedTab = stiListado;
            this.Limpiar();
            grdListado.DataSource = objCentroCosto.CargarDatosGridView();
            txtCadenaBuscar.Clear();
            txtCadenaBuscar.Focus();
            txtCodigo.Enabled = true;
        }

        private void sbpNuevo_Click(object sender, EventArgs e)
        {
            stcMaestro.SelectedTab = stiRegistro;
            this.Limpiar();
            txtCodigo.Enabled = true;
            txtCodigo.Focus();
        }

        private void btnNuevoCancelar_Click(object sender, EventArgs e)
        {
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcMaestro.SelectedTab = stiListado;
            this.Limpiar();
            txtCadenaBuscar.Select();
        }

        private void btnNuevoGuardar_Click(object sender, EventArgs e)
        {
            objCentroCosto = new clsCentroCosto();
            if (int.Parse(txtCodigo.Text) > 2000)
            {
                try
                {
                    objCentroCosto.Guardar(
                        int.Parse(txtCodigo.Text),
                        txtDescripcion.Text.Trim(),
                        int.Parse(txtDebe.Text),
                        int.Parse(txtHaber.Text),
                        2);
                    MessageBox.Show("SE HA REGISTRADO EL CENTRO DE COSTO", "SISTEMA DE CAJA CHICA",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    grdListado.DataSource = objCentroCosto.CargarDatosGridView();
                    sbMantenimiento.ExpandedPanel = sbpVer;
                    stcMaestro.SelectedTab = stiListado;
                    txtCadenaBuscar.Select();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("SE HA PRODUCIDO UN ERROR AL REGISTRAR EL CENTRO DE COSTO\nPOR FAVOR INTENTE DE NUEVO",
                        "SISTEMA DE CAJA CHICA", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                try
                {
                    objCentroCosto.Guardar(
                        int.Parse(txtCodigo.Text),
                        txtDescripcion.Text.Trim(),
                        int.Parse(txtDebe.Text),
                        int.Parse(txtHaber.Text),
                        1);
                    MessageBox.Show("SE HA REGISTRADO EL CENTRO DE COSTO", "SISTEMA DE CAJA CHICA",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    grdListado.DataSource = objCentroCosto.CargarDatosGridView();
                    sbMantenimiento.ExpandedPanel = sbpVer;
                    stcMaestro.SelectedTab = stiListado;
                    txtCadenaBuscar.Select();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("SE HA PRODUCIDO UN ERROR AL REGISTRAR EL CENTRO DE COSTO\nPOR FAVOR INTENTE DE NUEVO",
                        "SISTEMA DE CAJA CHICA", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void btnNuevoLimpiar_Click(object sender, EventArgs e)
        {
            this.Limpiar();
        }

        private void btnModificarSeleccionar_Click(object sender, EventArgs e)
        {
            objCentroCosto = new clsCentroCosto();
            DialogResult respuesta;
            int codigo;

            codigo = Convert.ToInt32(grdListado.CurrentRow.Cells[0].Value);
            objCajaEntity = new cajaEntities();
            centro_costo cc = objCajaEntity.centro_costo.FirstOrDefault(
                a => a.id == codigo);

            respuesta =
                MessageBox.Show(
                    "DESEA EDITAR EL REGISTRO" +
                    "\nCODIGO = " + cc.id +
                    "\nDESCRIPCION = " + cc.descripcion,
                    "SISTEMA DE CAJA CHICA",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);

            if (respuesta == DialogResult.Yes)
            {
                stcMaestro.SelectedTab = stiRegistro;

                txtCodigo.Text = cc.id.ToString();
                txtCodigo.Enabled = false;
                txtDescripcion.Text = cc.descripcion;
                txtDebe.Text = cc.amarre1.ToString();
                txtHaber.Text = cc.amarre2.ToString();

                sbMantenimiento.ExpandedPanel = sbpModificar;
                btnModificarSeleccionar.Enabled = false;
            }
            else
            {
                txtCadenaBuscar.Focus();
            }
        }

        private void btnModificarGuardarCambios_Click(object sender, EventArgs e)
        {
            objCentroCosto = new clsCentroCosto();
            if (int.Parse(txtCodigo.Text) > 2000)
            {
                try
                {
                    objCentroCosto.GuardarCambios(
                        int.Parse(txtCodigo.Text),
                        txtDescripcion.Text.Trim(),
                        int.Parse(txtDebe.Text),
                        int.Parse(txtHaber.Text),
                        2);
                    MessageBox.Show("SE HA GUARDADO LOS CAMBIOS", "SISTEMA DE CAJA CHICA",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    grdListado.DataSource = objCentroCosto.CargarDatosGridView();
                    sbMantenimiento.ExpandedPanel = sbpVer;
                    stcMaestro.SelectedTab = stiListado;
                    txtCadenaBuscar.Select();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("SE HA PRODUCIDO UN ERROR AL GUARDAR LOS CAMBIOS\nPOR FAVOR INTENTE DE NUEVO",
                        "SISTEMA DE CAJA CHICA", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                try
                {
                    objCentroCosto.GuardarCambios(
                        int.Parse(txtCodigo.Text),
                        txtDescripcion.Text.Trim(),
                        int.Parse(txtDebe.Text),
                        int.Parse(txtHaber.Text),
                        1);
                    MessageBox.Show("SE HA GUARDADO LOS CAMBIOS", "SISTEMA DE CAJA CHICA",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    grdListado.DataSource = objCentroCosto.CargarDatosGridView();
                    sbMantenimiento.ExpandedPanel = sbpVer;
                    stcMaestro.SelectedTab = stiListado;
                    txtCadenaBuscar.Select();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("SE HA PRODUCIDO UN ERROR AL GUARDAR LOS CAMBIOS\nPOR FAVOR INTENTE DE NUEVO",
                        "SISTEMA DE CAJA CHICA", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void btnEliminarEliminar_Click(object sender, EventArgs e)
        {
            objCentroCosto = new clsCentroCosto();
            string codigo;
            codigo = grdListado.CurrentRow.Cells[0].Value.ToString();

            DialogResult respuesta;
            respuesta = MessageBox.Show("¿DESEA ELIMINAR EL CENTRO DE COSTO SELECCIONADO?",
                "SISTEMA DE CAJA CHICA", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (respuesta == DialogResult.Yes)
            {
                objCentroCosto.Eliminar(int.Parse(codigo));
                grdListado.DataSource = objCentroCosto.CargarDatosGridView();
                sbMantenimiento.ExpandedPanel = sbpVer;
                stcMaestro.SelectedTab = stiListado;
                txtCadenaBuscar.Select();
            }
        }

        private void sbpModificar_Click(object sender, EventArgs e)
        {
            sbMantenimiento.ExpandedPanel = sbpModificar;
            stcMaestro.SelectedTab = stiListado;
            txtCadenaBuscar.Select();
            btnModificarSeleccionar.Enabled = true;
        }

        private void sbpVer_Click(object sender, EventArgs e)
        {
            stcMaestro.SelectedTab = stiListado;
            txtCadenaBuscar.Select();
        }
    }
}
